package 携程;

import java.util.Scanner;

/**
 * @author zhangmin
 * @create 2022-04-14 20:00
 */
public class Main3 {
    public static long getCount(char[] line,int cres){
        int index=0;
        long res=0;
        while (index<line.length){
            //判断第index个字符是否是期待的cres，如果是则直接跳过，将cres变化（0->1，1->0）
            if (line[index]!=(cres==0?'0':'1')){
                //当当前字符不是期待的字符时，从index向后找到第一个是期待字符的位置，然后将结果加上（i-index）
                int i=index+1;
                while (i<line.length){
                    if (line[i]==(cres==0?'0':'1')){
                        break;
                    }
                    i++;
                }
                if (i<line.length){
                    res+=(i-index);
                    //相当于将i和index交换，但是之后不会再用到index了，所以index的值可以不变
                    line[i]=line[index];
                }
            }
            index++;
            cres=(cres+1)%2;//将0变1，将1变0
        }
        return res;
    }
    public static long getCountpost(char[] line,int cres){
        int index=line.length-1;
        long res=0;
        while (index>=0){
            //判断第index个字符是否是期待的cres，如果是则直接跳过，将cres变化（0->1，1->0）
            if (line[index]!=(cres==0?'0':'1')){
                //当当前字符不是期待的字符时，从index向后找到第一个是期待字符的位置，然后将结果加上（i-index）
                int i=index-1;
                while (i>=0){
                    if (line[i]==(cres==0?'0':'1')){
                        break;
                    }
                    i--;
                }
                if (i>=0){
                    res+=(index-i);
                    //相当于将i和index交换，但是之后不会再用到index了，所以index的值可以不变
                    line[i]=line[index];
                }
            }
            index--;
            cres=(cres+1)%2;//将0变1，将1变0
        }
        return res;
    }
    public static void main(String[] args) {
        //通过给出的字符串的第一个字符是0还是1，其实可以得到最终的字符串
        //若第一个字符是0，交换完后一定是：01010101..(n个)
        //若第一个字符为1，交换后一定是：101010...（n个）
        //所以需要直接构造出结果，然后将结果和给出的字符串进行比较，双指针
        Scanner cin=new Scanner(System.in);
        char[] line = cin.nextLine().toCharArray();
        int zreo_count=0,one_count=0;
        for (int i = 0; i < line.length; i++) {
            if (line[i]=='0'){
                zreo_count++;
            }else if (line[i]=='1'){
                one_count++;
            }
        }
        //判断第一个字符是什么，然后赋值给当前结果中的字符
        if (zreo_count==one_count){
            long res1 = getCount(line, 0);
            long res2 = getCount(line, 1);
            long res3=getCountpost(line,0);
            long res4=getCountpost(line,1);
            System.out.println(Math.min(res1,Math.min(res2,Math.min(res3,res4))));
        }else {
            int cres=zreo_count>one_count?0:1;
            long res1 = getCount(line, cres);
            long res2=getCountpost(line,cres);
            System.out.println(Math.min(res1,res2));
        }

    }
}
